package com.ruoyi.drugSystem.service.impl;

import com.ruoyi.common.constant.UserConstants;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.drugSystem.domain.SysDrugBrand;
import com.ruoyi.drugSystem.mapper.SysDrugBrandMapper;
import com.ruoyi.drugSystem.service.ISysDrugBrandService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * impl 药物品牌服务
 *
 * @author 努力的派大星
 * @date 2023/03/08
 */
@Service
public class SysDrugBrandServiceImpl implements ISysDrugBrandService
{
    @Autowired
    private SysDrugBrandMapper sysDrugBrandMapper;

    /**
     * 查询药品品牌
     *
     * @param brandId 药品品牌主键
     * @return 药品品牌
     */
    @Override
    public SysDrugBrand selectSysDrugBrandByBrandId(Long brandId)
    {
        return sysDrugBrandMapper.selectSysDrugBrandByBrandId(brandId);
    }

    /**
     * 查询药品品牌列表
     *
     * @param sysDrugBrand 药品品牌
     * @return 药品品牌
     */
    @Override
    public List<SysDrugBrand> selectSysDrugBrandList(SysDrugBrand sysDrugBrand)
    {
        return sysDrugBrandMapper.selectSysDrugBrandList(sysDrugBrand);
    }

    /**
     * 校验品牌名称是否唯一
     *
     * @param drugBrand 品牌信息
     * @return 结果
     */
    @Override
    public boolean checkDrugBrandNameUnique(SysDrugBrand drugBrand)
    {
        Long drugBrandId = StringUtils.isNull(drugBrand.getBrandId()) ? -1L : drugBrand.getBrandId();
        SysDrugBrand info = sysDrugBrandMapper.checkDrugBrandNameUnique(drugBrand.getBrandName());
        if (StringUtils.isNotNull(info) && info.getBrandId().longValue() != drugBrandId.longValue())
        {
            return UserConstants.NOT_UNIQUE;
        }
        return UserConstants.UNIQUE;
    }

    /**
     * 校验品牌编码是否唯一
     *
     * @param drugBrand 品牌信息
     * @return 结果
     */
    @Override
    public boolean checkDrugBrandCodeUnique(SysDrugBrand drugBrand)
    {
        Long drugBrandId = StringUtils.isNull(drugBrand.getBrandId()) ? -1L : drugBrand.getBrandId();
        SysDrugBrand info = sysDrugBrandMapper.checkDrugBrandCodeUnique(drugBrand.getBrandCode());
        if (StringUtils.isNotNull(info) && info.getBrandId().longValue() != drugBrandId.longValue())
        {
            return UserConstants.NOT_UNIQUE;
        }
        return UserConstants.UNIQUE;
    }
    /**
     * 新增药品品牌
     *
     * @param sysDrugBrand 药品品牌
     * @return 结果
     */
    @Override
    public int insertSysDrugBrand(SysDrugBrand sysDrugBrand)
    {
        sysDrugBrand.setCreateTime(DateUtils.getNowDate());
        return sysDrugBrandMapper.insertSysDrugBrand(sysDrugBrand);
    }

    /**
     * 修改药品品牌
     *
     * @param sysDrugBrand 药品品牌
     * @return 结果
     */
    @Override
    public int updateSysDrugBrand(SysDrugBrand sysDrugBrand)
    {
        sysDrugBrand.setUpdateTime(DateUtils.getNowDate());
        return sysDrugBrandMapper.updateSysDrugBrand(sysDrugBrand);
    }

    /**
     * 批量删除药品品牌
     *
     * @param brandIds 需要删除的药品品牌主键
     * @return 结果
     */
    @Override
    public int deleteSysDrugBrandByBrandIds(Long[] brandIds)
    {
        return sysDrugBrandMapper.deleteSysDrugBrandByBrandIds(brandIds);
    }

    /**
     * 删除药品品牌信息
     *
     * @param brandId 药品品牌主键
     * @return 结果
     */
    @Override
    public int deleteSysDrugBrandByBrandId(Long brandId)
    {
        return sysDrugBrandMapper.deleteSysDrugBrandByBrandId(brandId);
    }

    @Override
    public List<SysDrugBrand> selectSysDrugBrandAll() {
        return sysDrugBrandMapper.selectSysDrugBrandAll();
    }
}
